﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.Services;
using System.Web.Script.Services;
using BusinnesLayer.LogicBusiness;
using EntitiesLayer.Entities;

namespace ClinicaSanPablo
{
    public partial class BusPaciente : System.Web.UI.Page
    { 
        private static System.Web.Script.Serialization.JavaScriptSerializer jsonSerializer = new System.Web.Script.Serialization.JavaScriptSerializer();
        private PacientesClinicabl pBl = new PacientesClinicabl();

        protected void Page_Load(object sender, EventArgs e)
        {
            Response.ContentType = "application/json";
            Response.Write(GetPacientes(Request.QueryString["sidx"].ToString(), Request.QueryString["sord"].ToString(), Convert.ToInt32(Request.QueryString["page"]), Convert.ToInt32(Request.QueryString["rows"]), Request.QueryString["apellidoPaciente"] ?? "", Request.QueryString["nombrePaciente"] ?? ""));
            Response.End();
        }

        public string GetPacientes(string sidx, string sord, int page, int rows, string apellidoPaciente, string nombrePaciente)
        {
            if (apellidoPaciente != "" || nombrePaciente != "")
            {
                List<Pacientes> lista = pBl.BuscarPacientes(apellidoPaciente, nombrePaciente);
                List<object> lstFilasAfil = new List<object>();
                if (lista.Count > 0)
                {
                    foreach (var paciente in lista)
                    {
                        var filaAfil = new
                        {
                            cell = new string[]
                        {
                            paciente.IPAC_NRO_DOCUMENTO.ToString(),
                            paciente.VPAC_APELLIDOS,
                            paciente.VPAC_NOMBRES,
                            paciente.VPAC_HHCC,
                            paciente.VPAC_EMAIL,
                            paciente.DPAC_NACIMIENTO.ToString(),
                            paciente.VPAC_TELEF_FIJO,
                            paciente.VPAC_CELULAR,
                            paciente.VPAC_DIRECCION,
                            paciente.VPAC_CENTRO_TRABAJO,
                            paciente.VPAC_SEXO,
                            paciente.VTIPS_COD_TIPO_SEGURO,
                            paciente.VPAC_COD_IAFA,
                            paciente.IPAC_NRO_HAB_HOSP.ToString(),
                            paciente.VDOC_COD_TIP_DOC,
                            paciente.VUBI_COD_UBI
                        }
                        };
                        lstFilasAfil.Add(filaAfil);
                    }

                    int totalPag = (int)Math.Ceiling((decimal)rows / (decimal)lista.Count);
                    var data = new
                    {
                        total = totalPag,
                        // Total de páginas
                        page = page,
                        // Página actual
                        records = lista.Count,
                        // Total de registros (obtenido del modelo)
                        rows = lstFilasAfil
                    };
                    return jsonSerializer.Serialize(data);
                }
                else
                {
                    var data = new
                    {
                        total = 0,
                        // Total de páginas
                        page = 1,
                        // Página actual
                        records = 0,
                        // Total de registros (obtenido del modelo)
                        rows = ""
                    };
                    return jsonSerializer.Serialize(data);
                }
            }
            else {
                var data = new
                {
                    total = 0,                    
                    page = 1,                    
                    records = 0,           
                    rows = ""
                };
                return jsonSerializer.Serialize(data);
            }
            
        }

        /*************************************************************************************/
        [WebMethod]
        [ScriptMethod(ResponseFormat = ResponseFormat.Json)]
        public static string Buscar_Clientes(string idhhcc)
        {
            try
            {
                Pacientesbl objPC = new Pacientesbl();
                List<object> datan = new List<object>();            

                List<Pacientes> lista = objPC.BuscarPaciente(idhhcc);
                if (lista.Count > 0) {
                    foreach (var paciente in lista) {
                        var data = new
                        {
                            resultado = true,
                            HHCC = idhhcc,
                            apellido = paciente.VPAC_APELLIDOS,
                            nombre = paciente.VPAC_NOMBRES,
                            documento = paciente.IPAC_NRO_DOCUMENTO,
                            telefonoFijo = paciente.VPAC_TELEF_FIJO,
                            celular = paciente.VPAC_CELULAR,
                            email = paciente.VPAC_EMAIL,
                            direccion = paciente.VPAC_DIRECCION,
                            edad = paciente.DPAC_NACIMIENTO,
                            centroTrabajo = paciente.VPAC_CENTRO_TRABAJO,
                            sexoPaci = paciente.VPAC_SEXO,
                            tipSeguro = paciente.VTIPS_COD_TIPO_SEGURO,
                            codIafa = paciente.VPAC_COD_IAFA,
                            tipdocumento = paciente.VDOC_COD_TIP_DOC,
                            nroHabitacion = paciente.IPAC_NRO_HAB_HOSP,
                            ubigeo = paciente.VUBI_COD_UBI
                        };
                        datan.Add(data);
                    }                   
                }
                return jsonSerializer.Serialize(datan);
              
            }
            catch (Exception ex)
            {
                var data = new
                {
                    resultado = false
                };
                return jsonSerializer.Serialize(data);
            }
        }



        [WebMethod]
        [ScriptMethod(ResponseFormat = ResponseFormat.Json)]
        public static string Buscar_DerivarSNC(string codigoSNC)
        {
            try
            {
                ServicioNoConformebl objPC = new ServicioNoConformebl();
                List<object> datan = new List<object>();
                List<ServicioNoConforme> lista = objPC.Listado_Email_Area_Involu(codigoSNC);
                string vcorreo1 = ""; string vcorreo2 = ""; string vcorreo3 = "";
                string vcorreo4 = "";
                if (lista.Count > 0)
                {
                    int p = 0;
                    foreach (var obj in lista){
                        if (p == 0) vcorreo1 = obj.VEMP_EMAIL;
                        if (p == 1) vcorreo2 = obj.VEMP_EMAIL;
                        if (p == 2) vcorreo3 = obj.VEMP_EMAIL;
                        if (p == 3) vcorreo4 = obj.VEMP_EMAIL;
                        p++;
                    }                 
                }

                var data = new
                {
                    resultado = true,
                    correo1 = vcorreo1,
                    correo2 = vcorreo2,
                    correo3 = vcorreo3,
                    correo4 = vcorreo4                   
                };

                   return jsonSerializer.Serialize(data);
                
            }
            catch (Exception ex)
            {
                var data = new
                {
                    resultado = false
                };
                return jsonSerializer.Serialize(data);
            }
        }


        
        [WebMethod]
        [ScriptMethod(ResponseFormat = ResponseFormat.Json)]
        public static string Buscar_DerivarNC(string codigoNC)
        {
            try
            {
                ServicioNoConformebl objPC = new ServicioNoConformebl();
                List<object> datan = new List<object>();
                List<ServicioNoConforme> lista = objPC.Listado_Email_A_InNC(codigoNC);
                string vcorreo1 = ""; string vcorreo2 = ""; string vcorreo3 = "";
                string vcorreo4 = "";
                if (lista.Count > 0)
                {
                    int p = 0;
                    foreach (var obj in lista){
                        if (p == 0) vcorreo1 = obj.VEMP_EMAIL;
                        if (p == 1) vcorreo2 = obj.VEMP_EMAIL;
                        if (p == 2) vcorreo3 = obj.VEMP_EMAIL;
                        if (p == 3) vcorreo4 = obj.VEMP_EMAIL;
                        p++;
                    }                 
                }

                var data = new
                {
                    resultado = true,
                    correo1 = vcorreo1,
                    correo2 = vcorreo2,
                    correo3 = vcorreo3,
                    correo4 = vcorreo4                   
                };

                   return jsonSerializer.Serialize(data);
                
            }
            catch (Exception ex)
            {
                var data = new
                {
                    resultado = false
                };
                return jsonSerializer.Serialize(data);
            }
        }

        [WebMethod]
        [ScriptMethod(ResponseFormat = ResponseFormat.Json)]
        public static string Buscar_QuejaReclamo(string codigo)
        {
            try
            {
                string xcodigo = "", xdescripcion = "", xNombrePaciente = "", xDocPaciente="", xHHCC = "", xDirigidoA = "";
                string xcodsede = "", xcodarea = "", xcodserv = "", xcodpre = "", xcodunineg = "", xapenomcolabinv="";
                string xapenomrecibpor = "", xrecnrolibrorecl = "", xcodtipque = "", xrecreqpac="",xrecinfadic = "";
                string xfechaevento = "", xpacapellidos = "", xpacNombres = "", xpacDireccion = "", xpacEdad = "", xpacEmail="";
                string xdocCodTipDoc = "", xpacNroDocumento = "", xpacCelular = "", xpacTelefFijo = "", xpacCodTipoPaciente="";
                string xsegCodCiaSeg = "", xpacCentroTrabajo = "", xpacSexo = "", xtipsCodTipoSeguro = "", xpacCodIafa="";
                string xpacNroHabHosp = "", xrecNombresRecl = "", xrec_Apellidos_Recl = "", xdocCodTipDocRecl = "", xubi_cod_ubi="";
                string xrecNroDocumento = "", xrecCelular="", xrecTelefFijo = "", xrecEmail = "", xpacCodRelPac = "", xrecPacienteoreprlegal="";
                
                QuejaReclamobl pBl = new QuejaReclamobl();                             
                List<QuejaReclamo> lista = pBl.BucarQuejaReclamo(codigo, "", "");
                if (lista.Count > 0)
                {
                  
                   foreach (var reclamo in lista){
                             xcodigo = reclamo.VREC_COD_REC;
                             xdescripcion = reclamo.VREC_DESC_REC;
                             xNombrePaciente = reclamo.Nombre_Paciente;
                             xDocPaciente = reclamo.IPAC_NRO_DOCUMENTO;
                             xHHCC = reclamo.VPAC_HHCC;
                             xDirigidoA = reclamo.Dirigido_A;
                             xcodsede= reclamo.VSED_COD_SEDE;
                             xcodarea = reclamo.VARE_COD_AREA;
                             xcodserv = reclamo.VSER_COD_SERV;
                             xcodpre = reclamo.VPRE_COD_PRE;
                             xcodunineg = reclamo.VNEG_COD_UNI_NEG;
                             xapenomcolabinv = reclamo.VREC_APE_NOM_COLAB_INV;
                             xapenomrecibpor = reclamo.VREC_APE_NOM_RECIB_POR;
                             xrecnrolibrorecl = reclamo.VREC_NRO_LIBRO_RECL;
                             xcodtipque = reclamo.VQUE_COD_TIP_QUE;
                             xrecreqpac = reclamo.VREC_REQ_PAC;
                             xrecinfadic = reclamo.VREC_INF_ADIC;
                             xfechaevento = Convert.ToString(reclamo.VREC_FECHA_EVENTO.ToShortDateString());
                             xpacapellidos = reclamo.Vpac_Apellidos;
                             xpacNombres = reclamo.Vpac_Nombres;
                             xpacDireccion = reclamo.Vpac_Direccion;
                             xpacEdad = reclamo.Ipac_Edad.ToString();
                             xpacEmail = reclamo.Vpac_Email;
                             xdocCodTipDoc = reclamo.Vdoc_Cod_Tip_Doc;
                             xpacNroDocumento = reclamo.Ipac_Nro_Documento.ToString();
                             xpacCelular = reclamo.Vpac_Celular;
                             xpacTelefFijo = reclamo.Vpac_Telef_Fijo;
                             xpacCodTipoPaciente = reclamo.Vpac_Cod_Tipo_Paciente;
                             xsegCodCiaSeg = reclamo.Vseg_Cod_Cia_Seg;
                             xpacCentroTrabajo = reclamo.Vpac_Centro_Trabajo;
                             xpacSexo = reclamo.Vpac_Sexo;
                             xtipsCodTipoSeguro = reclamo.Vtips_Cod_Tipo_Seguro;
                             xpacCodIafa = reclamo.Vpac_Cod_Iafa;
                             xpacNroHabHosp = reclamo.Ipac_Nro_Hab_Hosp.ToString();
                             xrecNombresRecl = reclamo.Vrec_Nombres_Recl;
                             xrec_Apellidos_Recl = reclamo.Vrec_Apellidos_Recl;
                             xdocCodTipDocRecl = reclamo.Vdoc_Cod_Tip_Doc;
                             xrecNroDocumento = reclamo.Irec_Nro_Documento.ToString();
                             xrecCelular = reclamo.Vrec_Celular;
                             xrecTelefFijo = reclamo.Vrec_Telef_Fijo;
                             xrecEmail = reclamo.Vrec_Email;
                             xpacCodRelPac = reclamo.Vpac_Cod_Rel_Pac;
                             xrecPacienteoreprlegal = reclamo.Vrec_Pacienteoreprlegal;
                             xubi_cod_ubi = reclamo.vubi_cod_ubi;
                  }


                }

                  var data = new
                {
                    resultado = true,
                    codigo=xcodigo,
                    descripcion = xdescripcion,
                    NombrePaciente = xNombrePaciente,
                    DocPaciente = xDocPaciente,
                    HHCC=xHHCC,
                    DirigidoA = xDirigidoA,
                    codsede = xcodsede,
                    codarea = xcodarea,
                    codserv = xcodserv,
                    codpre = xcodpre,
                    codunineg = xcodunineg,
                    apenomcolabinv = xapenomcolabinv,
                    apenomrecibpor=xapenomrecibpor,
                    recnrolibrorecl = xrecnrolibrorecl,
                    codtipque = xcodtipque,
                    recreqpac = xrecreqpac,
                    recinfadic = xrecinfadic,
                    fechaevento = xfechaevento ,
                    pacapellidos = xpacapellidos,
                    pacNombres = xpacNombres,
                    pacDireccion=xpacDireccion,
                    pacEdad=xpacEdad,
                    pacEmail = xpacEmail,
                    docCodTipDoc = xdocCodTipDoc,
                    pacNroDocumento =xpacNroDocumento ,
                    pacCelular=xpacCelular,
                    pacTelefFijo = xpacTelefFijo ,
                    pacCodTipoPaciente = xpacCodTipoPaciente,
                    segCodCiaSeg =xsegCodCiaSeg,
                    pacCentroTrabajo = xpacCentroTrabajo,
                    pacSexo = xpacSexo,
                    tipsCodTipoSeguro = xtipsCodTipoSeguro,
                    pacCodIafa = xpacCodIafa,
                    pacNroHabHosp = xpacNroHabHosp,
                    recNombresRecl = xrecNombresRecl,
                    rec_Apellidos_Recl=xrec_Apellidos_Recl ,
                    docCodTipDocRecl =xdocCodTipDocRecl,
                    recNroDocumento = xrecNroDocumento ,
                    recCelular = xrecCelular,
                    recTelefFijo = xrecTelefFijo,
                    recEmail = xrecEmail,
                    pacCodRelPac = xpacCodRelPac,
                    recPacienteoreprlegal = xrecPacienteoreprlegal,
                    ubi_cod_ubi=xubi_cod_ubi
                };

                return jsonSerializer.Serialize(data);

            }
            catch (Exception ex)
            {
                var data = new
                {
                    resultado = false
                };
                return jsonSerializer.Serialize(data);
            }
        }

        


    }
}